Dbufrd buffer demand ugen


superclass: DUGen



*new(bufnum, phase, loop)


all inputs can be either demand ugen or any other ugen.


bufnum buffer number to read from

phase index into the buffer

loop when phase exceeds number of frames in buffer, loops when set to 1 (default :1)


see also [Dbufwr]



// example


b = Buffer.alloc(s, 24, 1);

b.setn(0, { exprand(200, 500) } ! b.numFrames);

b.getn(0, b.numFrames, {|x| x.postln })


(

var indexPattern;

indexPattern = Dseq([Dseq([0, 3, 5, 0, 3, 7, 0, 5, 9], 3), Dbrown(0, 23, 1, 5)], inf);

SinOsc.ar(

Demand.kr(Dust.kr(10), 0, Dbufrd(b, indexPattern))

) * 0.1

}.play;

)


// buffer as a time pattern


c = Buffer.alloc(s, 24, 1);

c.setn(0, { [1, 0.5, 0.25].choose } ! c.numFrames);

c.getn(0, c.numFrames, {|x| x.postln })


(

var indexPattern;

indexPattern = Dseq([Dseq([0, 3, 5, 0, 3, 7, 0, 5, 9], 3), Dbrown(0, 23, 1, 5)], inf);

SinOsc.ar(

Duty.kr(

Dbufrd(c, Dseries(0, 1, inf)) * 0.5, 

0, 

Dbufrd(b, indexPattern)

)

) * 0.1

}.play;

)


// free buffers


b.free; c.free;